package com.atguigu.yygh.common.exception;


import com.atguigu.yygh.common.utils.ExceptionUtil;
import com.atguigu.yygh.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @author lenovo
 */ /*
全局异常处理
 */
 @Slf4j
@RestControllerAdvice//将这个类作用到所有的controller上,同时响应json字符串
public class GlobalExceptionHandler {

    //捕获全局素有的异常-通用的处理方式
    @ExceptionHandler(Exception.class)
    public R handlerException(Exception e){
        log.error(ExceptionUtil.getMessage(e));
        return R.error().message(e.getMessage());
    }

    //捕获空针异常,指定异常特殊处理
    @ExceptionHandler(NullPointerException.class)
    public R handlerException(NullPointerException e){
        log.error(ExceptionUtil.getMessage(e));
        return R.error().message("空指针异常");
    }

    //捕获自定义的异常
    @ExceptionHandler(YyghException.class)
    public R handlerException(YyghException e){

        log.error(ExceptionUtil.getMessage(e));

        return R.error().code(e.getCode()).message(e.getMessage());
    }
}
